package org.huawei260.TiKu.ODsuanfa;

import java.util.Scanner;

/**
 * @Author: qingle
 * @Date: 2024/10/28-16:11
 * @Description: 2537 【模拟】2024E绘图机器
 *
 * 绘图机器的绘图笔初始位置在原点(0,0)，机器启动后其绘图笔按下面规则绘制直线：
 *
 * 1) 尝试沿着横向坐标轴正向绘制直线，直到给定的终点值E。
 *
 * 2) 期间可通过指令在纵坐标轴方向进行偏移，并同时绘制直线，偏移后按规则1绘制直线。
 *
 * 指令的格式为X offsetY，表示在横坐标X沿纵坐标方向偏移，offsetY为正数表示正向偏移，为负数表示负向偏移。
 *
 * 给定了横坐标终点值E、以及若干条绘制指令，请计算绘制的直线和横坐标轴、以及 X=E 的直线组成图形的面积。
 *
 * 输入格式
 * 首行为两个整数 N E，表示有N条指令，机器运行的横坐标终点值E。
 *
 * 接下来N行，每行两个整数表示一条绘制指令X offsetY，用例保证横坐标X以递增排序方式出现，且不会出现相同横坐标X。
 *
 * 取值范围:0 < N <= 10000, 0 <= X <= E <= 20000, -10000 <= offsetY <= 10000。
 *
 * 输出格式
 * 一个整数，表示计算得到的面积，用例保证，结果范围在0~4294967295内
 * 输入样例    复制
 * 4 10
 * 1 1
 * 2 1
 * 3 1
 * 4 -2
 * 输出样例    复制
 * 12
 *
 * @version: 1.0
 */
public class E_2024E_2537__模拟绘图机器 {

//	public class Main {
		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);

			int n = sc.nextInt();
			int end_x = sc.nextInt();

			// 记录题解
			long ans = 0;

			long last_x = 0; // 上一个点的横坐标
			long last_y = 0; // 上一个点的纵坐标

			// 获取n行输入
			for (int i = 0; i < n; i++) {
				int cur_x = sc.nextInt(); // 当前点的横坐标
				int offset_y = sc.nextInt(); // 当前点纵坐标相较于上一个点纵坐标的偏移量

				// cur_x - last_x 结果是上一个点到当前点的横向距离, 这个距离过程中，高度保持为abs(last_y)
				ans += (cur_x - last_x) * Math.abs(last_y);

				// 更新last_x, last_y
				last_x = cur_x;
				last_y += offset_y;
			}

			// 注意结束位置的处理
			if (end_x > last_x) {
				ans += (end_x - last_x) * Math.abs(last_y);
			}

			System.out.println(ans);
		}
	}